//package com.shudaolink.wms.business.common.export.service.template;
//
//import org.apache.poi.ss.usermodel.*;
//import org.apache.poi.ss.util.CellRangeAddress;
//import org.apache.poi.xssf.streaming.SXSSFWorkbook;
//import org.springframework.stereotype.Service;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.text.SimpleDateFormat;
//import java.util.*;
//import java.util.stream.Collectors;
//
//
///**
// * @FileName: ExcelStorageCheckTemplate
// * @Author: caotao
// * @Date: 2025/6/18
// * @Description: 库存盘点Excel导出
// **/
//@Service
//public class ExcelStorageLocationTemplate  {
//
//
//
//
//    protected void writeExcel(HttpServletRequest request, HttpServletResponse response) throws IOException {
//        SXSSFWorkbook sxssWb = new SXSSFWorkbook(100);
//        Sheet sheet = sxssWb.createSheet("库位库存统计");
//        //统一设置表头、内容、尾部的样式
//        CellStyle heStyle = headerCellStyle(sxssWb);
//        CellStyle headerStyle2 = header2CellStyle(sxssWb);
//        CellStyle cellStyle = baseCellStyle(sxssWb);
//
//        //创建首行
//        Row rowTitle1 = sheet.createRow(0);
//        rowTitle1.setHeight((short) 700);
//        rowTitle1.setHeightInPoints(32);
//        //这里合并单元格前必须先给每个单元格先设置好样式
//        for (int i = 0; i < 4; i++) {
//            rowTitle1.createCell(i).setCellStyle(heStyle);
//        }
//        Cell cellRow1 = rowTitle1.getCell(0);
//        cellRow1.setCellValue("四川蜀道智联科技产业发展股份有限公司川南物流港库位库存明细表");
//        //合并单元格
//        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
//
//        //创建第二行
//        Row rowTitle2 = sheet.createRow(1);
//        rowTitle2.setHeight((short) 300);
//        rowTitle2.setHeightInPoints(28);
//        for (int i = 0; i < 4; i++) {
//            rowTitle2.createCell(i).setCellStyle(headerStyle2);
//        }
//        //new一个时间，设置格式为2024年9月6日17:49:40
//        Date date = new Date();
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
//        String format = sdf.format(date);
//        Cell cellRow2 = rowTitle2.getCell(0);
//        cellRow2.setCellValue("统计时间 : "+format);
//        sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 3));
//
//        //创建第3行
//        Row rowTitle3 = sheet.createRow(2);
//        Cell row3Cell1 = rowTitle3.createCell(0);
//        row3Cell1.setCellValue("库区");
//        Cell row3Cell2 = rowTitle3.createCell(1);
//        row3Cell2.setCellValue("库位");
//        Cell row3Cell3 = rowTitle3.createCell(2);
//        row3Cell3.setCellValue("物资名称");
//        Cell row3Cell4 = rowTitle3.createCell(3);
//        row3Cell4.setCellValue("账面库存件数");
//
//        //给第3行设置样式
//        for (Row row : sheet) {
//            if (row.getRowNum() > 1) {
//                for (Cell cell : row) {
//                    System.out.println("当前行数:"+ row.getRowNum());
//                    System.out.println("当前单元格:" + cell.getStringCellValue());
//                    cell.setCellStyle(cellStyle);
//                }
//            }
//        }
//        List<StorageLocationPrintVo> storages = exportQueryService.queryLocationStorageGroupByLocation(exportDataDto);
//
//        //数据填充和样式处理 begin ----------------------
//        Map<String, List<StorageLocationPrintVo>> listMap = storages.stream().sorted(Comparator.comparing(StorageLocationPrintVo::getZoneName).thenComparing(StorageLocationPrintVo::getLocationName, new LocationNameComparator())).collect(Collectors.groupingBy(StorageLocationPrintVo::getZoneName, LinkedHashMap::new, Collectors.toList()));
//        int qty = 0;
//        int rowNum = 0;
//        //循环listMap
//        for (Map.Entry<String, List<StorageLocationPrintVo>> m : listMap.entrySet()) {
//            List<StorageLocationPrintVo> printVoList = m.getValue();
//            for (StorageLocationPrintVo storage : printVoList) {
//                qty = qty + storage.getQty();
//                // 创建新行
//                Row row = sheet.createRow(rowNum + 3);
//                Cell value1 = row.createCell(0);
//                value1.setCellValue(storage.getZoneName());
//                Cell value2 = row.createCell(1);
//                value2.setCellValue(storage.getLocationName());
//                Cell value3 = row.createCell(2);
//                value3.setCellValue(storage.getProductFullName());
//                Cell value4 = row.createCell(3);
//                value4.setCellValue(storage.getQty() + "");
//                // 设置填充默认白底
//
//                value1.setCellStyle(cellStyle);
//                value2.setCellStyle(cellStyle);
//                value3.setCellStyle(cellStyle);
//                value4.setCellStyle(cellStyle);
//                // 递增行号，确保下次写入到下一行
//                rowNum++;
//            }
//        }
//
//        int beginLine = 3;
//        for (Map.Entry<String, List<StorageLocationPrintVo>> m : listMap.entrySet()) {
//            int endLine = beginLine + m.getValue().size()-1;
//            //起始行,结束行,起始列,结束列
//            if (beginLine < endLine) {
//                sheet.addMergedRegion(new CellRangeAddress(beginLine, endLine, 0, 0));
//            }
//            beginLine = endLine +1;
//        }
//        // ------------------------- end -------------------
//
//        //尾部处理------------------- start ------------------
//        //获取总计这一行
//        Row lastRow1 = sheet.createRow(beginLine);
//        for (int i = 0; i < 4; i++) {
//            lastRow1.createCell(i).setCellStyle(cellStyle);
//        }
//        Cell lrC1 = lastRow1.getCell(0);
//        lrC1.setCellValue("总计");
//        Cell lrC4 = lastRow1.getCell(3);
//        lrC4.setCellValue(qty);
//        lastRow1.setHeightInPoints(28);
//
//        //合并合计单元格
//        sheet.addMergedRegion(new CellRangeAddress(beginLine , beginLine , 0, 2));
//        // 尾部处理结束 ----------------end------------------
//
//        //设置每列宽度
//        sheet.setColumnWidth(0,10*256);
//        sheet.setColumnWidth(1,10*256);
//        sheet.setColumnWidth(2,60*256);
//        sheet.setColumnWidth(3,15*256);
//        sheet.setColumnWidth(4,15*256);
//        //写文件
//        sxssWb.write(response.getOutputStream());
//
//    }
//
//    //数据查询
//
//    public CellStyle baseCellStyle(SXSSFWorkbook sxssWb) {
//        CellStyle cellStyle = sxssWb.createCellStyle();
//        cellStyle.setAlignment(HorizontalAlignment.CENTER);
//        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
//        cellStyle.setBorderTop(BorderStyle.THIN);
//        cellStyle.setBorderBottom(BorderStyle.THIN);
//        cellStyle.setBorderLeft(BorderStyle.THIN);
//        cellStyle.setBorderRight(BorderStyle.THIN);
//        Font font = sxssWb.getXSSFWorkbook().createFont();
//        font.setFontName("仿宋_GB2312");
//        cellStyle.setFont(font);
//        return cellStyle;
//    }
//
//    public  CellStyle headerCellStyle (SXSSFWorkbook sxssWb) {
//        CellStyle cellStyle = baseCellStyle(sxssWb);
//        Font font = sxssWb.getXSSFWorkbook().createFont();
//        //加粗
//        font.setFontName("仿宋_GB2312");
//        font.setBold(true);
//        font.setFontHeightInPoints((short) 16);
//        font.setFontHeight((short) 300);
//        cellStyle.setFont(font);
//        return cellStyle;
//    }
//    public  CellStyle header2CellStyle (SXSSFWorkbook sxssWb) {
//        CellStyle cellStyle = baseCellStyle(sxssWb);
//        cellStyle.setAlignment(HorizontalAlignment.LEFT);
//        Font font = sxssWb.getXSSFWorkbook().createFont();
//        //加粗
//        font.setFontName("仿宋_GB2312");
//        font.setFontHeight((short) 220);
//        cellStyle.setFont(font);
//        return cellStyle;
//    }
//
//
//
//}
